草庐IT

C++ volatile 放置 新

全部标签

c++ - 如果 volatile 是不必要的,为什么 std::atomic 方法提供 volatile 重载?

thisgoodanswer说:volatileiscompletelyunnecessarywhenusedwithstd::atomic.然而,std::atomic_fecth_sub提供重载函数:templateTatomic_fetch_sub(volatilestd::atomic*obj,typenamestd::atomic::difference_typearg)noexcept;我的问题是:如果volatile对于std::atomic来说完全没有必要,为什么C++标准要为它提供一个重载函数? 最佳答案 Ifvo

c++ - 类 : "expected unqualified-id before ' volatile'"? 中的 volatile 变量

我在类ADC中定义了两个staticvolatile变量。该类写为:(裁剪以节省空间)#pragmaonce#include"../PeriodicProcess/PeriodicProcess.h"#include#includeclassADC{private:staticinlineunsignedcharSPI_transfer(unsignedchardata);voidread(uint32_ttnow);staticconstunsignedcharadc_cmd[9];staticvolatileuint32_t_sum[8];staticvolatileuint16_

c++ - 使用内存映射文件进行持久化 - 是否需要 volatile?

我需要在重新启动时持久保留uint64_t标记。为了实现这一点,我使用boost::interprocess::mapped_region来内存映射我在同一进程中创建的文件:bip::file_mappingfile(filename.c_str(),bip::read_write);autoregion=std::make_unique(file,bip::read_write);然后我将地址转换为我的uint64_t类型usingTag=uint64_t;Tag&curr_=*reinterpret_cast(region->get_address());现在我可以后递增标签,获取

c++ - 如何在不放置任何物理依赖项的情况下指定 Makefile 目标构建顺序?

我一直在处理链接到.so(动态库)文件的C++项目。假设我有一个目标PROG需要链接到a.so,而a.so也是我构建的,在下面的Makefile中指定。PROG_SRCS=prog.cppPROG_OBJS=$(PROG_SRCS:%.cpp:%.o)all:PROGPROG:$(PROG_OBJS)liba.so$(LINK.cpp)-o$@$(PROG_OBJS)-laLIBA_SRCS=liba/a.cppLIBA_OBJS=$(LIBA_SRCS:%.cpp:%.o)liba.so:$(LIBA_OBJS)$(LINK.cpp)-shared-Wl.-soname,$@-o$@

c++ - 其他线程是否会在合理的时间内看到对 `volatile` 字大小变量的写入?

当询问morespecificproblem时我发现这是人们不确定的核心问题。可以做出以下假设:CPU确实使用了像MESI(F)这样的缓存一致性协议(protocol)(例如:x86/x86_64和ARMv7mp)假定变量的大小由处理器自动写入/读取(对齐和native字大小)变量被声明为volatile问题是:如果我在一个线程中写入变量,其他线程会看到变化吗?其他线程看到变化的时间范围的数量级是多少?您是否知道缓存一致性不足以确保跨CPU/跨核心可见性的架构?问题不是:使用这样的变量安全吗?关于重新排序问题关于C++11原子这可能被认为是InC/C++,arevolatilevari

c++ - 使用 Barnes-Hut 进行图形放置的优化问题

我一直在尝试解决我的图形可视化应用程序中的力导向图/Barnes-Hut问题。到目前为止,我已经检查了八叉树的创建,它看起来正确(树由方框表示,圆圈是我的图形节点):我的Quadtree中的字段如下:classQuadtree{public:intlevel;Quadtree*trees[2][2][2];glm::vec3vBoundriesBox[8];glm::vec3center;boolleaf;floatcombined_weight=0;std::vectorobjects;//Additionmethods/fieldsprivate://Additionalmetho

如何使图像在放置在< a-scene>中使用< a-assets>和< a-image>

我正在尝试使用AfrAme-ar.js和Aframe.js的Web的增强现实。我想制作一个我放置的图像可拖动。我有用标签首先注册图像,然后使用在网络摄像头中标识标记时显示图像。该图像已成功显示,但即使尝试了许多选项,我也无法使其拖动。我的代码进入这里:AugmentedRealityForWeb看答案这不是A型框架内置的,但是您可以使用第三方组件来获得所需的结果。aframe-click-drag-component允许在屏幕上单击和拖动实体:查看演示.

多线程系列(四) -volatile关键字使用详解

一、简介在上篇文章中,我们介绍到在多线程环境下,如果编程不当,可能会出现程序运行结果混乱的问题。出现这个原因主要是,JMM中主内存和线程工作内存的数据不一致,以及多个线程执行时无序,共同导致的结果。同时也提到引入synchronized同步锁,可以保证线程同步,让多个线程依次排队执行被synchronized修饰的方法或者方法块,使程序的运行结果与预期一致。不可否认,采用synchronized同步锁确实可以保证线程安全,但是它对服务性能的消耗也很大,synchronized是一个独占式的同步锁,比如当多个线程尝试获取锁时,其中一个线程获取到锁之后,未获取到锁的线程会不断的尝试获取锁,而不会发

c++ - 文件操作 |获取和放置指针

我有一些关于操作文件的问题;a.)我对C++中的get和put指针有点困惑。我是否显示了获取指针和放置指针的正确位置。MyFile.seekg(0,ios::beg);MyFile.seekp(-10,ios::end);index:012345678910...-10-9-8-7-6-5-4-3-2-10__________________________________________________________________^^^^^^getPointerputpointerMyfile.get(character);MyFile.write(SomeString,4);M

c++ - 函数没有 volatile。怎么修?

我在两个线程之间共享一个变量。我使用volatile来避免优化。但是,它显示了一个错误,因为在strcpy中没有volatile。(如下)如何正确修复此错误?有人告诉我要通过类型抛弃volatile。但是,如果我抛弃了volatile,那么我就失去了volatile的目的……最终可能会因优化而出现运行时错误......不是吗?非常感谢。(代码可以直接编译)CRITICAL_SECTIONCriticalSection;HANDLEhEvent;void__cdeclMyThread(void*name){charserName[256];volatilechar*vptr=(char*